import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

print("=== 太阳能定日镜场设计问题分析 ===\n")

# 读取附件数据
df = pd.read_excel('附件.xlsx')
print(f"附件数据概况：")
print(f"总共有{len(df)}个坐标点")
print(f"x坐标范围：{df['x坐标 (m)'].min():.3f} ~ {df['x坐标 (m)'].max():.3f}")
print(f"y坐标范围：{df['y坐标 (m)'].min():.3f} ~ {df['y坐标 (m)'].max():.3f}")

# 计算场地面积（如果是封闭区域）
x = df['x坐标 (m)'].values
y = df['y坐标 (m)'].values

# 使用鞋带公式计算多边形面积
def polygon_area(x, y):
    return 0.5 * abs(sum(x[i]*y[i+1] - x[i+1]*y[i] for i in range(-1, len(x)-1)))

area = polygon_area(x, y)
print(f"场地面积约为：{area:.2f} 平方米")

# 可视化场地边界
plt.figure(figsize=(12, 10))
plt.plot(x, y, 'b-', linewidth=2, label='场地边界')
plt.plot(x, y, 'ro', markersize=3, alpha=0.6)
plt.xlabel('x坐标 (m)')
plt.ylabel('y坐标 (m)')
plt.title('太阳能定日镜场地边界')
plt.grid(True, alpha=0.3)
plt.axis('equal')
plt.legend()

# 保存图片
plt.tight_layout()
plt.savefig('field_boundary.png', dpi=300, bbox_inches='tight')
plt.show()

# 分析数据模式
print("\n数据分析：")
print("前10个点的坐标变化：")
for i in range(10):
    print(f"点{i+1}: ({x[i]:.3f}, {y[i]:.3f})")

# 计算相邻点之间的距离
distances = []
for i in range(len(x)-1):
    dist = np.sqrt((x[i+1]-x[i])**2 + (y[i+1]-y[i])**2)
    distances.append(dist)

print(f"\n相邻点平均距离：{np.mean(distances):.3f}m")
print(f"相邻点距离标准差：{np.std(distances):.3f}m")

# 检查是否为闭合曲线
start_end_dist = np.sqrt((x[0]-x[-1])**2 + (y[0]-y[-1])**2)
print(f"起点终点距离：{start_end_dist:.3f}m")

if start_end_dist < 1.0:  # 如果小于1米，认为是闭合的
    print("这是一个闭合的边界曲线")
else:
    print("这不是一个闭合的边界曲线")

print("\n根据数据推测：")
print("1. 这可能是太阳能发电站定日镜场的可用区域边界")
print("2. 需要在此区域内优化放置定日镜")
print("3. 需要考虑吸收塔位置和定日镜的几何参数") 